// 地狱之旅/8l/asm.c
// https:
// None
// None
// None
// None
// None
// None
// None
// None
// None
// None
// 特此向任何获得副本的人免费授予许可
// 本软件和相关文档文件（“软件”）的
// 在软件中不受限制，包括但不限于权利
// 使用、复制、修改、合并、发布、分发、再许可和/或销售
// 软件的副本，并允许向其提供软件的人员
// 按照以下条件提供：
// None
// 上述版权声明和本许可声明应包含在
// 软件的所有副本或主要部分。
// None
// 本软件按“原样”提供，无任何形式的明示或明示担保
// 默示，包括但不限于适销性保证，
// 适用于特定目的和非侵权。在任何情况下
// 作者或版权持有人应承担任何索赔、损害或其他责任
// 无论是在合同诉讼、侵权诉讼或其他诉讼中，由以下原因引起的责任：，
// 与本软件有关或与本软件的使用或其他交易有关
// 软件。

package sym

// 可怕但标准的术语。
// 段描述要加载到内存中的文件块。
// 一节进一步描述了该块的各个部分
// 用于调试器等。

type Segment struct {
	Rwx      uint8  // 正常unix位的权限（5=r-x等）
	Vaddr    uint64 // 虚拟地址
	Length   uint64 // 内存长度
	Fileoff  uint64 // 文件偏移量
	Filelen  uint64 // 磁盘上的长度
	Sections []*Section
}

type Section struct {
	Rwx     uint8
	Extnum  int16
	Align   int32
	Name    string
	Vaddr   uint64
	Length  uint64
	Seg     *Segment
	Elfsect interface{} // 一个*ld.ElfShdr
	Reloff  uint64
	Rellen  uint64
	// Relcount是应用于此节的*主机*重定位数
	// （外部链接时）。
	// 在多个goroutine上以原子方式递增。
	// 注：这可能与一次性搬迁的次数不同
	// 可能会变成多个主机重新定位。
	Relcount uint32
	Sym      LoaderSym // 截面符号（如有）
	Index    uint16    // 每个部分都有一个内部使用的唯一索引
}
